Conventional computer programs store data. Data can be transferred between programs automatically using conventional communications techniques, or it can be transferred by a user. When the user of one program desires to transfer data to another program, the user can use fairly primitive methods of transferring the data, such as manually retyping the data from one program to the next.
The use of a clipboard can simplify this process somewhat. A “clipboard” is one or more areas of storage into which data from one program may be copied or cut, along with a designator of one of a limited number of types of the data, such as text, or bitmap and that is accessible to other programs for pasting. The user uses the clipboard in the WINDOWS operating system by cutting or copying data from the source program, and then pasting the cut or copied data into the destination program at the desired location. The destination program is provided access to the contents of the clipboard and can accept it and process the contents.
The use of a clipboard makes it somewhat easier to transfer data from one program to another, however, there are several problems with a conventional clipboard. First, the clipboard allows the transfer of data as a single blob. If the user wants to use the clipboard to copy a name and address from one program, the name and individual components of the address must be copied one at a time, requiring the user to implement a cumbersome back and forth movement between the two programs.
Second, the user receives no indication that the program into which the data is being pasted can actually receive the data prior to pasting it. For example, a destination program may not be able to accept for pasting a bitmap stored in the clipboard. In many cases, only way for the user to figure this out is by trial and error. For example, the user will attempt to paste the data into the program, assume there has been an error, try to paste again, and when that doesn't work, assume there has been a problem with the cut or copy and repeat the process until the user finally figures out that the paste simply isn't going to work.
Third, there is no way that the authors of the sending and receiving programs can agree to allow new types of data, beyond the limited data types allowed by the operating system, to be pasted via the clipboard. If a “name and address” data type were allowed to be specified by the program providing the data described above, the program into which the data was being pasted could determine that what was being pasted was a name and address, and could parse the fields (e.g. first name, last name, street address line 1, street address line 2, city, state, zip) and receive them into the proper fields in the receiving program. Because of the limited data types specified by conventional clipboards, such an arrangement is not possible. Furthermore, as different programs are used to supply different types of data, the types of data permitted to be provided and received cannot be altered.
What is needed is a system and method that can allow the transfer of a multi-part data structure under user control in a format other than a single blob of data, can inform the user whether the program to which the user desires to transfer data can accept the data, and can allow programs to define new types of data that can be transferred between them under user control.